package com.fwzhang.third.collectionframework.collection.set;

import java.util.Comparator;
import java.util.Set;

/**
 * SortedSet 接口
 */
public interface SortedSetInterface<E> extends Set<E> {

    /**
     * 有序Set集合的统一接口
     */

    /**
     * 用于集合内元素排序的比较器
     * @return
     */
    Comparator<? super E> comparator();

    // 以下三个方法获取的子集合都是由当前集合支持，对子集合修改也会影响当前集合

    /**
     * 截取集合，获取子集合
     * 和list中的subList()方法类似
     * @param fromElement
     * @param toElement
     * @return
     */
    SortedSetInterface<E> subSet(E fromElement, E toElement);

    /**
     * 获取小于指定元素的Set集合
     * @param toElement
     * @return
     */
    SortedSetInterface<E> headSet(E toElement);

    /**
     * 获取大于等于指定元素的set集合
     * @param fromElement
     * @return
     */
    SortedSetInterface<E> tailSet(E fromElement);

    /**
     * 获取当前集合第一个元素中的数据
     * @return
     */
    E first();

    /**
     * 获取当前集合最后一个元素中的数据
     * @return
     */
    E last();

}
